knitr::opts_chunk$set(echo = TRUE)
Comme des futures Datascientistes, il existe des centaines des questions que nous nous questionne chaque jour. Pour ce là, je vais travaillé sur une dataset des jobs concernant notre domaine de la part de l’entreprise du GLassdor.com
Glassdoor est un site Internet où les employés actuels et anciens employés d’entreprises évaluent leur environnement de travail de manière anonyme
Notre Dataset contient deux fichiers :
eda_data.csv : Cet ensemble de données contient les offres d’emploi de Glassdoor.com de 2017 à 2018. Cet ensemble de données comprend des caractéristiques comme le titre du poste, l’estimation du salaire, la description de poste, la cote, le nom de l’entreprise, l’emplacement, le siège social, la taille, la société fondée, le type de propriété, l’industrie, le secteur, les revenus, les concurrents, et dresse une liste des caractéristiques les plus importantes de cet ensemble de données. , les salaires horaires minima et maxima,, avgsalary,, numcomp,,sdesc_len Si vous cherchez un emploi dans le domaine de la science des données, alors c’est l’ensemble de données que vous pouvez explorer! Les informationes concernant les entreprises sont un peu faussifs c’est pourquoi nous allons faire le matching entre ce fichier et le fichier du glassdor jobs
X : Identificateur unique de l’offre d’emploi (numérique)
job_state : L’état où se trouve le travail (chaîne)
same_state : Indicateur binaire indiquant si l’emploi est dans le même état que la personne qui regarde l’emploi (chaîne)
âge : l’âge de la personne qui examine l’emploi (numérique)
python_yn : Indicateur binaire indiquant si la personne qui regarde le travail connaît Python (String)
R_yn : Indicateur binaire indiquant si la personne qui regarde le poste connaît R (chaîne de caractères)
spark : Un indicateur binaire de si la personne qui regarde le travail sait Spark (String)
aws : un indicateur binaire permettant de savoir si la personne qui regarde le travail connaît AWS (chaîne)
excel : Indicateur binaire indiquant si la personne qui regarde le travail connaît Excel (chaîne)
job_simp : Titre du poste simplifié (chaîne de caractères)
seniority : L’ancienneté du poste (chaîne)
desc_len : La durée de la description de poste (numérique)
num_comp: Le nombre de concurrents pour le poste (numérique)
1.A) Description statistique du fichier eda_data :
## X Job.Title Salary.Estimate Job.Description
## Min. : 0.0 Length:742 Length:742 Length:742
## 1st Qu.:185.2 Class :character Class :character Class :character
## Median :370.5 Mode :character Mode :character Mode :character
## Mean :370.5
## 3rd Qu.:555.8
## Max. :741.0
## Rating Company.Name Location Headquarters
## Min. :-1.000 Length:742 Length:742 Length:742
## 1st Qu.: 3.300 Class :character Class :character Class :character
## Median : 3.700 Mode :character Mode :character Mode :character
## Mean : 3.619
## 3rd Qu.: 4.000
## Max. : 5.000
## Size Founded Type.of.ownership Industry
## Length:742 Min. : -1 Length:742 Length:742
## Class :character 1st Qu.:1939 Class :character Class :character
## Mode :character Median :1988 Mode :character Mode :character
## Mean :1837
## 3rd Qu.:2007
## Max. :2019
## Sector Revenue Competitors hourly
## Length:742 Length:742 Length:742 Min. :0.00000
## Class :character Class :character Class :character 1st Qu.:0.00000
## Mode :character Mode :character Mode :character Median :0.00000
## Mean :0.03234
## 3rd Qu.:0.00000
## Max. :1.00000
## employer_provided min_salary max_salary avg_salary
## Min. :0.00000 Min. : 15.00 Min. : 16.0 Min. : 13.5
## 1st Qu.:0.00000 1st Qu.: 52.00 1st Qu.: 96.0 1st Qu.: 73.5
## Median :0.00000 Median : 69.50 Median :124.0 Median : 97.5
## Mean :0.02291 Mean : 74.72 Mean :128.1 Mean :100.6
## 3rd Qu.:0.00000 3rd Qu.: 91.00 3rd Qu.:155.0 3rd Qu.:122.5
## Max. :1.00000 Max. :202.00 Max. :306.0 Max. :254.0
## company_txt job_state same_state age
## Length:742 Length:742 Min. :0.000 Min. : -1.00
## Class :character Class :character 1st Qu.:0.000 1st Qu.: 11.00
## Mode :character Mode :character Median :1.000 Median : 24.00
## Mean :0.558 Mean : 46.59
## 3rd Qu.:1.000 3rd Qu.: 59.00
## Max. :1.000 Max. :276.00
## python_yn R_yn spark aws
## Min. :0.0000 Min. :0.000000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.000000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :1.0000 Median :0.000000 Median :0.0000 Median :0.0000
## Mean :0.5283 Mean :0.002695 Mean :0.2251 Mean :0.2372
## 3rd Qu.:1.0000 3rd Qu.:0.000000 3rd Qu.:0.0000 3rd Qu.:0.0000
## Max. :1.0000 Max. :1.000000 Max. :1.0000 Max. :1.0000
## excel job_simp seniority desc_len
## Min. :0.0000 Length:742 Length:742 Min. : 407
## 1st Qu.:0.0000 Class :character Class :character 1st Qu.: 2801
## Median :1.0000 Mode :character Mode :character Median : 3731
## Mean :0.5229 Mean : 3870
## 3rd Qu.:1.0000 3rd Qu.: 4740
## Max. :1.0000 Max. :10051
## num_comp
## Min. :0.000
## 1st Qu.:0.000
## Median :0.000
## Mean :1.054
## 3rd Qu.:3.000
## Max. :4.000
## X Job.Title Salary.Estimate Job.Description
## "integer" "character" "character" "character"
## Rating Company.Name Location Headquarters
## "numeric" "character" "character" "character"
## Size Founded Type.of.ownership Industry
## "character" "integer" "character" "character"
## Sector Revenue Competitors hourly
## "character" "character" "character" "integer"
## employer_provided min_salary max_salary avg_salary
## "integer" "integer" "integer" "numeric"
## company_txt job_state same_state age
## "character" "character" "integer" "integer"
## python_yn R_yn spark aws
## "integer" "integer" "integer" "integer"
## excel job_simp seniority desc_len
## "integer" "character" "character" "integer"
## num_comp
## "integer"
1.B) Quelques ligne du fichier eda_data :
2.A) Description statistique du fichier glassdoor_jobs :
## Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
## Fin de fichier (EOF) dans une chaîne de caractères entre guillements
## X Job.Title Salary.Estimate Job.Description
## Length:15538 Length:15538 Length:15538 Length:15538
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
## Rating Company.Name Location Headquarters
## Length:15538 Length:15538 Length:15538 Length:15538
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
## Size Founded Type.of.ownership Industry
## Length:15538 Length:15538 Length:15538 Length:15538
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
## Sector Revenue Competitors
## Length:15538 Length:15538 Length:15538
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
2.B) Quelques ligne du fichier glassdoor_jobs :
## X Job.Title Salary.Estimate Job.Description
## "character" "character" "character" "character"
## Rating Company.Name Location Headquarters
## "character" "character" "character" "character"
## Size Founded Type.of.ownership Industry
## "character" "character" "character" "character"
## Sector Revenue Competitors
## "character" "character" "character"
1.A) Data Quality Assessment pour le fichier eda_data :
RQ :
l’utilité du champ est trouvé entre 1 et 3
1 : n’est pas utile
2 : utile mais demande une manipulation
3 : utile
– Taux de manipulation est trouvé aussi entre 1 et 3
1 : ne demande pas de manipulation
2 : demande un peu de manipulation
3 : demande beaucoup de manipulation
| Nom du champ | Description du champ | Utilité du champ | Taux de manipulation |
|---|---|---|---|
| X | Identificateur unique de l’offre d’emploi (numérique) | 3 | 1 |
| job_state | L’état où se trouve le travail (chaîne) | 3 | 1 |
| same_state | Indicateur binaire indiquant si l’emploi est dans le même état que la personne qui regarde l’emploi (chaîne) | 1 | 1 |
| Age | l’âge de la personne qui examine l’emploi (numérique) | 3 | 1 |
| python_yn | Indicateur binaire indiquant si la personne qui regarde le travail connaît Python (String) | 3 | 1 |
| R_yn | Indicateur binaire indiquant si la personne qui regarde le poste connaît R (chaîne de caractères) | 3 | 1 |
| spark | Un indicateur binaire de si la personne qui regarde le travail sait Spark (String) | 1 | 1 |
| aws | Un indicateur binaire permettant de savoir si la personne qui regarde le travail connaît AWS (chaîne) | 1 | 1 |
| excel | Indicateur binaire indiquant si la personne qui regarde le travail connaît Excel (chaîne) | 1 | 1 |
| job_simp | Titre du poste simplifié (chaîne de caractères) | 3 | 1 |
| seniority | L’ancienneté du poste (chaîne) | 3 | 1 |
| desc_len | La durée de la description de poste (numérique) | 1 | 1 |
| num_comp | Le nombre de concurrents pour le poste (numérique) | 1 | 1 |
1.) 1.B) Data Quality Assessment pour le fichier glassdoor_jobs :
RQ :
l’utilité du champ est trouvé entre 1 et 3
1 : n’est pas utile
2 : utile mais demande une manipulation
3 : utile
– Taux de manipulation est trouvé aussi entre 1 et 3
1 : ne demande pas de manipulation
2 : demande un peu de manipulation
3 : demande beaucoup de manipulation
| Nom du champ | Description du champ | Utilité du champ | Taux de manipulation |
|---|---|---|---|
| X | l’identificateur unique de chaque job | 3 | 1 |
| Job Title | le titre de chaque job | 3 | 1 |
| Salary Estimate | l’estimation du chaque salaire par intervalle | 2 | 2 |
| Job Description | Description profondue du chaque offre d’emploi | 1 | 1 |
| Rating | le rating de chaque emploi | 3 | 1 |
| Company Name | le nom du chaque entreprise | 3 | 1 |
| Location | le local du chaque entreprise qui a posté l’offre d’emploi | 3 | 1 |
| Headquarter | Le local de chaque siège des entreprises | 3 | 1 |
| Size | le taille de l’entreprise | 3 | 1 |
| Founded | Date de lancement de l’entreprise | 3 | 1 |
2.A) Data cleaning du fichier eda_data et transformation de ses données :
2.A.1) supprimer les lignes nuls d’eda_data:
library(tidyr)
## Warning: le package 'tidyr' a été compilé avec la version R 4.2.2
eda_data %>% drop_na()
2.A.2) Nous souhaitons travaillé sur les datascientists donc notre étape suivante et d’extracter les offres d’emplois des data scientistes seulement
eda_data_cleaned = eda_data[eda_data$job_simp=='data scientist',]
eda_data_cleaned
2.A.3) Après le cleaning du dataset nous devons maintenant choisir les colonnes que nous allons travaillés avec elles :
NB : Nous allons choisir nos colonnes basant sur le data quality assessment du dataframe eda_data_cleaned :
## Warning: le package 'dplyr' a été compilé avec la version R 4.2.2
##
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
##
## filter, lag
## Les objets suivants sont masqués depuis 'package:base':
##
## intersect, setdiff, setequal, union
2.A.4) Conclusion :
Maintenant , Après le data cleaning du eda_data nous devons faire le memes étapes avec le fichier glassdoor jobs
2.B) Data cleaning du fichier Glassdoor Jobs :
2.B.1) supprimer les lignes nuls d’eda_data:
## [1] "X" "Job.Title" "Salary.Estimate"
## [4] "Job.Description" "Rating" "Company.Name"
## [7] "Location" "Headquarters" "Size"
## [10] "Founded" "Type.of.ownership" "Industry"
## [13] "Sector" "Revenue" "Competitors"
2.B.2) Le fichier glassdoor_jobs est un fichier txt. Alors tous ses champs vont etre des champs de types caractères, mais il existe des champs du type numeric ou double donc l’étape suivante est de transformer ses champs là
## Warning: NAs introduits lors de la conversion automatique
## Warning: NAs introduits lors de la conversion automatique
## Warning: NAs introduits lors de la conversion automatique
2.B.3) Choisir les colonnes nécessaires :
2.B.4) Conclusion :
Après la manipulation des données du fichier glassdoor_jobs nous nous devons faire le matching entre les deux fichiers
2.C) Matching entre les deux ensembles des données :
new_data_frame = merge(eda_data_chosen,glassdoor_jobs_chosen,by.x='X',by.y = 'X', all.x = T, no.dup = T)
new_data_frame
Notre ensemble de données après les manipuations nécessaires a diminiué sa taille donc nous nous sommes dans le besoin de faire le data reduction, nous pouvons voir ci-dessous le taille de notre nouveau dataset :
## [1] 284
Après la manipulation de notre jeu de données , nous sommes maintenant capables une série des plots :
Les minimumes salaires par pays
Les maximumes salaires par pays
les salaires moyennes par secteurs
la différence des salaire entre les personnes qui connait le langage python ou non
la différence des salaire entre les personnes qui connait le langage R ou non
4.A) Les salaires minimale par pays :
library(ggplot2)
## Warning: le package 'ggplot2' a été compilé avec la version R 4.2.2
ggplot(data=new_data_frame, aes(x=Loc2,y = min_salary)) +
geom_point()+
labs(title="Les salaire minimumes par pays",x="Les pays", y = "en $")
4.B) Les salaires maximales par pays :
library(ggplot2)
ggplot(data=new_data_frame, aes(x=Loc2,y = max_salary)) +
geom_point()+
labs(title="Les salaire maximales par pays",x="Les pays", y = "en $")
4.C) : Les salaires moyennes par secteur :
library(ggplot2)
p <- ggplot(data=new_data_frame, aes( x=avg_salary,y=Loc2)) +
geom_bar(stat = "identity")
p
4.D) la différence des salaire entre les personnes qui connait la langage python ou non:
library(gapminder)
## Warning: le package 'gapminder' a été compilé avec la version R 4.2.2
library(patchwork)
## Warning: le package 'patchwork' a été compilé avec la version R 4.2.2
p <- ggplot(data=new_data_frame, aes( x=avg_salary,fill = python_yn ))
p <- p +geom_area(aes(y = avg_salary))
p <- p +theme_minimal()
p
4.D) la différence des salaire entre les personnes qui connait la langage R ou non:
p <- ggplot(data=new_data_frame, aes( x=avg_salary,fill = R_yn ))
p <- p +geom_area(aes(y = avg_salary))
p <- p +theme_minimal()
p
##Conclusion Les salaires des datascientistes sont très important et diffèrent avec une marge importante aussi. Nous avons trouvé d’après nos graphes que pour être payer mieux tu dois viser un secteur spécialisé dans l’informatique.